Pass group state to _gdk_x11_device_xi2_translate_state
authorMatthias Clasen <mclasen@redhat.com>
Sat, 5 Feb 2011 02:01:52 +0000 (21:01 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 5 Feb 2011 02:11:40 +0000 (21:11 -0500)
This will be necessary to make groups work with XI2.

gdk/x11/gdkdevice-xi2.c
gdk/x11/gdkdevicemanager-xi2.c
gdk/x11/gdkprivate-x11.h

index b49cbaab151f9b8aa2f89af96fac673975bd8f52..a3700de7578de4a2fe39cb2fac28a107839cd97b 100644 (file)
@@ -361,7 +361,7 @@ gdk_x11_device_xi2_query_state (GdkDevice        *device,
     *win_y = (gint) xwin_y;
 
   if (mask)
-    *mask = _gdk_x11_device_xi2_translate_state (&mod_state, &button_state);
+    *mask = _gdk_x11_device_xi2_translate_state (&mod_state, &button_state, &group_state);
 
   free (button_state.mask);
 
@@ -602,7 +602,7 @@ gdk_x11_device_xi2_window_at_position (GdkDevice       *device,
     *win_y = (window) ? (gint) xwin_y : -1;
 
   if (mask)
-    *mask = _gdk_x11_device_xi2_translate_state (&mod_state, &button_state);
+    *mask = _gdk_x11_device_xi2_translate_state (&mod_state, &button_state, &group_state);
 
   free (button_state.mask);
 
@@ -685,7 +685,8 @@ _gdk_x11_device_xi2_translate_event_mask (GdkEventMask  event_mask,
 
 guint
 _gdk_x11_device_xi2_translate_state (XIModifierState *mods_state,
-                                     XIButtonState   *buttons_state)
+                                     XIButtonState   *buttons_state,
+                                     XIGroupState    *group_state)
 {
   guint state = 0;
 
index 33cd1ae27fc43634b7bf12a1bef3024560e742c2..16de055269323b3db626f7ce90c7cde9c94d0119 100644 (file)
@@ -1017,7 +1017,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
         event->key.window = window;
 
         event->key.time = xev->time;
-        event->key.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons);
+        event->key.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
         event->key.group = _gdk_x11_get_group_for_state (display, event->key.state);
 
         event->key.hardware_keycode = xev->detail;
@@ -1095,7 +1095,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
                                                      GUINT_TO_POINTER (xev->sourceid));
                 gdk_event_set_source_device (event, source_device);
 
-                event->scroll.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons);
+                event->scroll.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
                 break;
               }
             /* else (XI_ButtonRelease) fall thru */
@@ -1131,7 +1131,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
                 gdk_device_get_axis (device, event->button.axes, GDK_AXIS_Y, &event->button.y);
               }
 
-            event->button.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons);
+            event->button.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
             event->button.button = xev->detail;
           }
 
@@ -1167,7 +1167,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
                                              GUINT_TO_POINTER (xev->sourceid));
         gdk_event_set_source_device (event, source_device);
 
-        event->motion.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons);
+        event->motion.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
 
         /* There doesn't seem to be motion hints in XI */
         event->motion.is_hint = FALSE;
@@ -1216,7 +1216,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
 
         event->crossing.mode = translate_crossing_mode (xev->mode);
         event->crossing.detail = translate_notify_type (xev->detail);
-        event->crossing.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons);
+        event->crossing.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
       }
       break;
     case XI_FocusIn:
index f3b8a8c1461c0892ff874d4378ccff704296eb70..e70846419f9cd552cfc7f902fec221d15e348797 100644 (file)
@@ -241,7 +241,8 @@ void _gdk_x11_device_xi_translate_axes     (GdkDevice *device,
 guchar * _gdk_x11_device_xi2_translate_event_mask (GdkEventMask     event_mask,
                                                    gint            *len);
 guint    _gdk_x11_device_xi2_translate_state      (XIModifierState *mods_state,
-                                                   XIButtonState   *buttons_state);
+                                                   XIButtonState   *buttons_state,
+                                                   XIGroupState    *group_state);
 
 void     _gdk_x11_event_translate_keyboard_string (GdkEventKey *event);